题意:Alice 想要得到一个长度为 $n$ 的序列,序列中的数都是不超过 $m$ 的正整数,而且这 $n$ 个数的和是 $p$ 的倍数。
Alice 还希望,这 $n$ 个数中,至少有一个数是质数。
Alice 想知道,有多少个序列满足她的要求。
$1\leq n \leq 10^9,1\leq m \leq 2\times 10^7,1\leq p\leq 100$。
很显然,要求的方案数可以转化为所有方案数减去不含质数的方案数
对于所有方案,设$f_{i,j}$表示前$i$个数$mod~p$等于$j$的方案数
$f_{i,j}=\sum\limits_{k=1}^{m}f_{i-1,((j-k)\%p+p)\%p}$
对于不含质数的方案,我们只需先预处理$cnt_i$表示$1$~$m$中$\%p==i$的合数的个数,设$g_{i,j}$表示前$i$个数$mod~p$等于$j$且没有质数的方案数。
$g_{i,j}=\sum\limits_{k=0}^{p-1} cnt_{((j-k)\%p+p)\%p}$
然后发现这两个东西显然都可以用矩阵快速幂优化
1 |
|